package day12.collection.demo;
//collection<E>集合包括list<E>集合和set<E>集合这都是接口，实现类是Arrlist和Linkedlist

import java.util.*;
import java.util.function.Consumer;
public class demo1 {
    public static void main(String[] args)
    {int a[]={1,2,3};
        //就是普通的多变数组，可通过索引来随机访问
     List<String> list = new ArrayList<>();//多态
     list.add("java");
     list.add("php");
     list.add("python");
     list.add("c++");


     Object []arr=list.toArray();
      //  String []arrr=list.toArray();不行
      String[]arrr=list.toArray(new String[0]);
//迭代器遍历
        System.out.println(list.iterator().next());//默认迭代器指的是0
        Iterator<String> it=list.iterator();//重新获取迭代器
        while(it.hasNext())//遍历，，第二次执行的时候还是把next移动到了0一直没出去，建议操作单一迭代器
        {
            String name=it.next();
         //  String name=list.iterator().next();//会一直循环，因为一直重新获取list的新的迭代器就指向0的位置，每次调用 list.iterator() 都会创建一个新的迭代器，并将位置重置到列表开头。
            System.out.println(name);


            func();
        }
           //数据类型(泛型的具体类型)，操作的变量：对象（数组或者集合）,增强for循环
        for(String name:list)
        {
            System.out.println(name);
        }
        for(int name:a)
        {
            System.out.println(name);
        }

        //lambda遍历
        list.forEach(new Consumer<String>()
        {
            @Override
            public void accept(String s)
            {
                System.out.println(s);
            }
        }
        );

        String str="asd";
        str.length();

        //set家族，集合中不允许有重复元素，并且不支持随机访问，是根据hash函数来排的，无顺序
        Set<String> set = new HashSet<>();
        set.add("java");
        set.add("php");
        set.add("python");
        set.add("java");

        System.out.println(set);


    }

    public static void func()
    {
        int a=5;
        System.out.println(a);
        a+=1;
    }
}
